/**
 * 参考代码
 * https://www.cnblogs.com/shadajin/p/5724117.html
 */
;(function () {
  var user_agent_str = navigator.userAgent.toLowerCase();
  var isWeixin = !!/MicroMessenger/i.test(user_agent_str),
    isIOS = /iPhone|iPad|iPod/i.test(navigator.userAgent),
    isAndroid = /(Android|SymbianOS|Windows Phone)/i.test(navigator.userAgent),
    isPc = !this.isAndroid && !this.isIOS,
    isSafari = /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent)
  ;

  function isIphoneX() {
    var a = new RegExp("iphone", "i")
      , b = navigator.userAgent.toLowerCase()
      , c = a.test(b);
    if (c) {
      var d = window.screen.width
        , e = window.screen.height;
      return d >= 375 && e >= 812 ? !0 : !1
    }
    return !1
  }

  var t
  var config = {
    /*scheme:必须*/
    scheme_IOS: 'cundong://', // IOS的Universal Link
    scheme_Adr: 'cundong://splash', // 安卓Scheme的URL，唤醒协议
    download_url: 'https://app.yyfq.com:10443/xiaodaiyu/xiaodaiyuceshi.apk', // 安卓 直接下载的URL
    appstore_url: 'https://itunes.apple.com/cn/app/id1441650577?mt=8', // IOS AppStore下载地址
    qq_store_url: 'http://app.qq.com/#id=detail&appid=1107495160', // 应用宝下载地址
    ios_plist: 'https://app.yyfq.com:10443/xiaodaiyu/xiaodaiyu.plist',// IOS企业版Plist下载地址，Plist需要正确指向ipa路径
    ios_provision: 'http://apps.xdy7.com/pros/mljrxiaodaiyuDis.mobileprovision',// IOS 企业版证书文件地址
    timeout: 600 // 唤醒超时时间设置
  }

  /**
   * 创建不可见的iframe层去打开APP。如果打不开，就跳转到download_url下载页面
   * @param scheme_url 唤醒Scheme，
   * @param timeout_download_url 唤醒失败时的跳转下载地址URL
   */
  function openApp1(scheme_url, timeout_download_url) {
    var ifr = document.createElement('iframe');
    ifr.src = scheme_url;
    ifr.style.display = 'none';
    document.body.appendChild(ifr);

    var startTime = Date.now();
    var t = setTimeout(function () {
      var endTime = Date.now()

      if (!startTime || endTime - startTime < config.timeout + 200) { // 计时后，检查当前时间，如果实际时间已过 1200 毫秒，说明唤起 app 成功（唤起 app 会让浏览器的定时器变慢）；如果没超过 1200 毫秒，很可能是没有安装应用，就跳到下载地址。
        window.location = timeout_download_url;
      } else {
      }
    }, config.timeout);

    window.onblur = function () {
      clearTimeout(t)
    }
  }

  /**
   * 优化OpenApp1的代码：
   * 优化原因：https://blog.csdn.net/linshijun33/article/details/71429669
   * 因为 Android 系统是多任务系统，setTimeOut基本就没那么精准，不能起到理想效果。换一种方式， setInterval ，如果设置比较小的运行间隔（<30ms），在浏览器或者 webview 中，应用切换到后台，setInterval 会被很明显的延迟执行，比如设置一个运行间隔 20ms，总计运行 100 次的定时器，如果页面一直处于前台，则 100 次跑完，总耗时与 100x20=2000ms 不会有太大差异，但页面在后台运行时，此时间会明显超过 2000ms。可以利用这一点来实现是否成功打开 app 检测及回调。
   * @param openUrl
   * @param appUrl
   * @param action
   * @param callback
   */
  function openApp(openUrl, appUrl, action, callback) {
    // 检查 app 是否打开
    function checkOpen(cb) {
      var _clickTime = +(new Date());

      function check(elsTime) {
        if (elsTime > 3000 || document.hidden || document.webkitHidden) {
          cb(1);
        } else {
          cb(0);
        }
      }

      // 启动间隔 20ms 运行的定时器，并检测累计消耗时间是否超过 3000ms，超过则结束
      var _count = 0, intHandle;
      intHandle = setInterval(function () {
        _count++;
        var elsTime = +(new Date()) - _clickTime;
        if (_count >= 100 || elsTime > 3000) {
          clearInterval(intHandle);
          check(elsTime);
        }
      }, 20);
    }

    // 在 iframe 中打开 app
    var ifr = document.createElement('iframe');
    ifr.src = openUrl;
    ifr.style.display = 'none';
    ifr.style.cssText = 'display:none;width=0;height=0';
    if (callback) {
      checkOpen(function (opened) {
        callback && callback(opened);
      });
    }

    document.body.appendChild(ifr);
    setTimeout(function () {
      document.body.removeChild(ifr);
    }, 2000);
  }

  function locationOpen(url) {
    window.location.href = url;
  }

  function autoOpen() {

    // 1、微信里面不管什么情况，直接使用应用宝打开
    if (isWeixin || isQQBrowser) {
      locationOpen(config.appstore_url)
    } else if (isIOS) {
      // 唤醒伪代码
      if (isWeixin || isQQBrowser()) {
        if (config.qq_store_url) {
          openApp(config.qq_store_url,)
        }
        openUrl(qq_store);// 打开应用宝
      } else {
        openInFrame(ios_scheme); // iframe里面唤醒
      }

    } else if (isAndroid) {
      // 安装代码
      if (isWeXin() || isQQBrowser()) {
        openUrl(qq_store);
      } else if (isAndroid()) {
        openUrl(android_download);
      } else if (isIos()) {

      }
    }


  }

  window.addEventListener(
    'DOMContentLoaded',
    function () {
      document
        .getElementById('J-call-app')
        .addEventListener('click', openclient, false)
    },
    false
  );


})()
